package com.diapoclic.entitymanager;

import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;

import javax.security.auth.login.FailedLoginException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

import com.diapoclic.entitydao.*;
import com.diapoclic.entitybean.*;

public class UserManager {

	private UserDao userDao=new UserDao();
	private DocumentDao documentDao=new DocumentDao();
	
	private User userConnect=new User();

	
	public void helloWorld()
	{
		System.out.println("Hello les gars!!! \n");
	}
	
	public UserDao getUserDao()
	{
		return this.userDao;
	}
	
	public User authentification(String login, String pass) throws SQLException
	{
		
		userConnect=userDao.findByLogin(login);
		//cas où il y a aucune réponse
		if (userConnect.getIdUser()==0) 		return new User();
 
		//vérification du password
		if (userConnect.getPassword().equals(pass) && userConnect!=null )
		{
			return userConnect;
		}
		return new User();
	}
	
	public boolean loginExist(String login) throws SQLException
	{
		userConnect=userDao.findByLogin(login);
		if(userConnect.getIdUser()==0) return false;
		else return true;
	}
	
	public User addUser(String newName, String newFirstname, String newMail, String newPassword, String newLogin) throws SQLException
	{
		User newUser=new User();
		//on vérifie l'unicité du login
		if(loginExist(newLogin)) return new User();
		
		//on l'ajoute à la base
		userDao.addUser(newName, newFirstname, newMail, newPassword, newLogin);
		newUser=userDao.findByLogin(newLogin);
		return newUser;
	}
	
	public int updateUser(User userUpdate) throws SQLException
	{
		
		return userDao.updateUser(userUpdate);
		
	}
	
	public int listDocument(int idUser)
	{	
		return 0;
	}
	
	public boolean addFriend(int idUser, String loginFriend) throws SQLException
	{
		User newFriend = new User();
		
		if(loginExist(loginFriend) && !(userDao.findById(idUser)).getLogin().equals(loginFriend))
		{
			newFriend = userDao.findByLogin(loginFriend);
			userDao.addFriend(idUser, newFriend.getIdUser());
			return true;
		}
		else return false;
		
	}
	
	public User findByLogin(String login) throws SQLException
	{
		return userDao.findByLogin(login);
	}
	
	
	public User getSessionUser(Cookie[] cookies)
	{
	////////////////////////////////UTILISATION DES COOKIES///////////////////////////
		
		HashMap map = new HashMap();
    	//S'il y a au moins un cookie, on stocke les cl�s-valeurs dans une Map
    	if (cookies != null) {
    		for (Cookie cookie : cookies) {
    			map.put(cookie.getName(), cookie.getValue());
    		}
    	}
    	
    	//recuperation du User en cours de connexion    	
		try {
			userConnect=userDao.findByLogin((String)map.get("name"));
		} catch (SQLException e1) {
			System.out.println("ContactServlet.java : l'utilisateur connecté n'a pas été trouvé");
			e1.printStackTrace();
		}		
    	return userConnect;
    	
  
		
	}

	
}
